package com.cyl.wms.service;

import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cyl.wms.mapper.ProductMapper;
import com.cyl.wms.domain.entity.Product;
import com.cyl.wms.domain.query.ProductQuery;
import org.springframework.data.domain.Pageable;



/**
 * 商品Service业务层处理
 *
 *
 * @author zcc
 */
@Service
public class ProductService {
        // 自动注入实例
        @Autowired
        private ProductMapper productMapper;

        /**
         * 新增商品
         *
         * @param product 商品
         * @return 结果
         */
        public int insert(Product product) {
            product.setCreateTime(LocalDateTime.now());
            return productMapper.insert(product);
        }

        /**
         * 查询商品
         *
         * @param query和page 查询条件
         * @return 结果
         */
        // query和page是实例
        public List<Product> selectList(ProductQuery query, Pageable page) {
                //分页参数传了就开启分页插件，这是 PageHelper 插件的静态方法，用来开启分页拦截功能。
                // 调用之后，紧随其后的 SQL 查询会自动分页，不用你手动加 LIMIT 语句。
                if (page != null) {
                        PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
                }
                // QueryWrapper 是 MyBatis-Plus 框架提供的一个查询条件构造器类。
                QueryWrapper<Product> qw = new QueryWrapper<>();
                // 判断参数是否为空，动态拼条件，eq是精确查询
                if (query.getProductName() != null && !query.getProductName().isEmpty()) {
                        qw.eq("productName", query.getProductName());
                }
                // 调用Mapper查询
                return productMapper.selectList(qw);
        }
}
